package view;

import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.EmptyBorder;

import contratos.Servidor;
import contratos.Ui;

public class Gui extends JFrame implements /*ObservadorServidor,*/ ActionListener, Ui{
	
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private Servidor servidor;
	private JLabel lEstado, lPorta, lIp;
	private JButton btnIniciar, btnParar;
	private JTextArea taRequisicoes;

	public Gui(Servidor servidor) {
		this.servidor = servidor;
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 705, 600);
		
		inicializarComponentes();
		
		setVisible(true);
	}


//	@Override
//	public void servidorAtualizado(MeuServidor servidor) {
////		atualizarEstado();
////		atualizarPorta();
//		repaint();
//	}



//	private void atualizarPorta() {
//		lPorta.setText(servidor.getPorta()+" ");		
//	}

//	private void atualizarEstado() {
////		if(servidor.isAtivo()){
////			lEstado.setText("Online");
////			
////		}else{
////			lEstado.setText("Offline");
////		}		
//	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getSource() == btnIniciar){
			servidor.iniciar();			
			btnParar.setEnabled(true);
			btnIniciar.setEnabled(false);
		}
		
		if(e.getSource() == btnParar){
			servidor.parar();			
			btnParar.setEnabled(false);
			btnIniciar.setEnabled(true);
		}		
	}
	
	private void inicializarComponentes(){
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);	
		
		btnIniciar = new JButton("Iniciar");
		btnIniciar.setBounds(10, 11, 89, 23);
		contentPane.add(btnIniciar);		
		btnIniciar.addActionListener(this);
		
		btnParar = new JButton("Parar");
		btnParar.setBounds(114, 11, 89, 23);
		contentPane.add(btnParar);
		btnParar.setEnabled(false);
		btnParar.addActionListener(this);	
		
		lEstado = new JLabel("offline");
		lEstado.setBounds(210, 15, 80, 14);
		lEstado.setForeground(Color.RED);
		contentPane.add(lEstado);
		
		JLabel lblPorta = new JLabel("Porta:");
		lblPorta.setForeground(Color.GRAY);
		lblPorta.setFont(new Font("Tahoma", Font.BOLD, 16));
		lblPorta.setBounds(310, 15, 57, 14);
		contentPane.add(lblPorta);
		
		lPorta = new JLabel("Inicie o servidor");
		lPorta.setBounds(370, 15, 109, 14);
		contentPane.add(lPorta);
		
		JLabel lblIp = new JLabel("Ip: ");
		lblIp.setFont(new Font("Tahoma", Font.BOLD, 16));
		lblIp.setForeground(Color.GRAY);
		lblIp.setBounds(530, 8, 46, 28);
		contentPane.add(lblIp);
		
		lIp = new JLabel("Inicie o servidor");
		lIp.setBounds(560, 15, 109, 14);
		contentPane.add(lIp);
		
		JLabel lblRequisies = new JLabel("Requisi\u00E7\u00F5es");
		lblRequisies.setFont(new Font("Tahoma", Font.BOLD, 16));
		lblRequisies.setBounds(10, 45, 133, 21);
		contentPane.add(lblRequisies);
		
		JScrollPane scrollRequisicoes = new JScrollPane();
		scrollRequisicoes.setBounds(10, 70, 670, 480);
		contentPane.add(scrollRequisicoes);
		
		taRequisicoes = new JTextArea();
		scrollRequisicoes.setViewportView(taRequisicoes);	
	}



	@Override
	public void atualizarLog(boolean sucesso, String msg) {
		if(!sucesso){
			msg = "Erro: "+msg;
		}
		taRequisicoes.setText(taRequisicoes.getText().toString()+"\n"+msg);		
	}

	@Override
	public void atualizarLegenda(Legenda legenda) {
		
		if(legenda.isConexao()){
			lEstado.setForeground(Color.BLUE);
		}else{
			lEstado.setForeground(Color.RED);
		}
		
		lEstado.setText(legenda.getEstado());
		lPorta.setText(legenda.getPorta());
		lIp.setText(legenda.getIp());		
	}



	
}
